package com.library.books.domain;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.library.common.annotation.Excel;
import com.library.common.core.serialize.DesensitizeSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 学生信息对象 student
 *
 * @author hb
 * @date 2024-10-14
 */
@ApiModel("学生信息对象 表名：student")
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;

    /** id */
    @ApiModelProperty("id")
    @TableId(type = IdType.AUTO)
    private Long studentId;

    /** 学号 */
    @ApiModelProperty("学号")
    @Excel(name = "学号")
    private String studentNumber;

    /** 卡号 */
    @ApiModelProperty("卡号")
    @Excel(name = "卡号")
    private String studentCardNumber;

    /** 学生身份证号 */
    @ApiModelProperty("学生身份证号")
    @Excel(name = "学生身份证号")
    @JsonSerialize(using = DesensitizeSerialize.class)
    private String studentIdCard;

    /** 学生姓名 */
    @ApiModelProperty("学生姓名")
    @Excel(name = "学生姓名")
    @JsonSerialize(using = DesensitizeSerialize.class)
    private String studentName;

    /** 学生虚名 */
    @ApiModelProperty("学生虚名")
    @Excel(name = "学生虚名")
    private String studentNick;

    /** 年龄 */
    @ApiModelProperty("年龄")
    @Excel(name = "年龄")
    private Long studentAge;

    /** 性别 */
    @ApiModelProperty("性别")
    @Excel(name = "性别")
    private String studentSex;

    /** 出生年月日 */
    @ApiModelProperty("出生年月日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生年月日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date studentBirthday;

    /** 籍贯 */
    @ApiModelProperty("籍贯")
    @Excel(name = "籍贯")
    private String studentNativePlace;

    /** 政治面貌 */
    @ApiModelProperty("政治面貌")
    @Excel(name = "政治面貌")
    private String studentPoliticalFace;

    /** 民族 */
    @ApiModelProperty("民族")
    @Excel(name = "民族")
    private String studentNation;

    /** 户口所在地 */
    @ApiModelProperty("户口所在地")
    @Excel(name = "户口所在地")
    private String studentRegisteredResidence;

    /** 现住址 */
    @ApiModelProperty("现住址")
    @Excel(name = "现住址")
    private String studentAddress;

    /** 手机号 */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    @JsonSerialize(using = DesensitizeSerialize.class)
    private String studentPhoneNumber;

    /** 小程序绑定的手机号 */
    @ApiModelProperty("小程序绑定的手机号")
    @Excel(name = "小程序绑定的手机号")
    @JsonSerialize(using = DesensitizeSerialize.class)
    private String studentAppletPhoneNumber;

    /** 班级 */
    @ApiModelProperty("班级")
    @Excel(name = "班级")
    private String studentClass;

    /** 宿舍楼栋号 */
    @ApiModelProperty("宿舍楼栋号")
    @Excel(name = "宿舍楼栋号")
    private String studentDoor;

    /** 宿舍楼层、门号、如:(5-211) */
    @ApiModelProperty("宿舍楼层、门号、如:(5-211)")
    @Excel(name = "宿舍楼层、门号、如:(5-211)")
    private String studentDorm;

    /** 床号 */
    @ApiModelProperty("床号")
    @Excel(name = "床号")
    private String studentBedNumber;

    /** 头像 */
    @ApiModelProperty("头像")
    @Excel(name = "头像")
    private String studentHeadPic;

    /** 港澳台侨外 */
    @ApiModelProperty("港澳台侨外")
    @Excel(name = "港澳台侨外")
    private String studentOverseas;

    /** 学籍状态 */
    @ApiModelProperty("学籍状态")
    @Excel(name = "学籍状态")
    private String studentSchoolRollStatue;

    /** 考勤状态 */
    @ApiModelProperty("考勤状态")
    @Excel(name = "考勤状态")
    private String studentAttendanceStatus;

    /** 审核状态 */
    @ApiModelProperty("审核状态")
    @Excel(name = "审核状态")
    private String studentAuditStatue;

    /** 创建人id */
    @ApiModelProperty("创建人id")
    @Excel(name = "创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Long createId;

    /** 创建者 */
    @ApiModelProperty("创建者")
    @Excel(name = "创建者")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @Excel(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 修改人id */
    @ApiModelProperty("修改人id")
    @Excel(name = "修改人id")
    @TableField(fill = FieldFill.UPDATE)
    private Long updateId;

    /** 修改人 */
    @ApiModelProperty("修改人")
    @Excel(name = "修改人")
    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;
}
